package day7.oop;

import org.junit.Test;

public class Demo {

	@Test
	public void test1() {
		DaYan daYan = new DaYan();
		daYan.egg();
		daYan.fly();
		daYan.print();
		
		// 虽然new出来的是DaYan这个对象，但是声明的变量bird是站在AbstractBird这个
		// 角度去看的new出来的这个DaYan,所以只能看到AbstractBird里面定义的egg()这个方法
		AbstractBird bird = new DaYan();
		bird.egg();
		// The method fly() is undefined for the type AbstractBird
		// bird.fly();
		// bird.print();
		
		// 站在能不能飞IFly这个角度去看new出来的DaYan，所以只能看到IFly里面定义的fly()这个方法
		IFly fly = new DaYan();
		fly.fly();
		// fly.egg();
		// fly.print();
		
		fly = new GeZi();
		fly.fly();
	}
}
